/************************************************************************
 * Este archivo, representa metodos y variables relacionadas con la 
 * funcionalidad de impresion
 * 
 * @system: veco-system
 * @description: Sistema de control vehicular
 * @version: 1.0
 * @Copyright © 2013 
 * 
 * @authores:
 * 
 *      > Alberione, Fernando    <falberione_037@gmail.com>
 * 
 *      > Boretto, Martin        <martinboretto@gmail.com>
 * 
 *      > Lenarduzzi, Federico   <fedeatenas@gmail.com>
 * 
 *      > Ocampo, Emanuel        <eocampo86@gmail.com>
 *
 *************************************************************************/

package SistemaCocheras;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.PrintJob;
import java.awt.Toolkit;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class Impresora {
    
    Font fuente = new Font("Monospaced", Font.BOLD, 8);
    PrintJob impresion = null;
    Graphics pagina = null;

    
    // ---------------------------------------------------------
    // ------- Seccion de constructores de la clase
    // ---------------------------------------------------------      

    /**
     * Constructor vacio
     */
    public Impresora()
    {
        this.impresion = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "SCAT", null);
    }
    

    // ---------------------------------------------------------
    // ------- Seccion de metodos publicos auxiliares
    // ---------------------------------------------------------

    /**
     * Metodo encargado de imprimir el ticket dependiendo del tipo del mismo
     * @param tipo Representa el tipo de ticket a imprimir
     */
    public void imprimirTicket (int tipo){
        String rutaArchivo = crearRutaArchivo(tipo);
        try{
            crearEntornoDeImpresion(rutaArchivo);
        }
        catch(Exception Ex){
            System.out.println ("Se ha cancelado la impresion");
        }
    }// Fin imprimirTicket
    
    
    
    // ---------------------------------------------------------
    // ------- Seccion de metodos privados
    // ---------------------------------------------------------
    
    /**
     * Metodo encargado de crear la ruta del archivo (ticket) a imprimir
     * @param tipoTicket Representa el tipo de ticket a imprimir
     * @return ruta
     */
    private String crearRutaArchivo (int tipoTicket){
        String ruta = "";
        switch(tipoTicket){
            case 1: {
                ruta = "C:\\formato\\ticketIngreso.txt";
                break;
            }
            case 2: {
                ruta = "C:\\formato\\ticketEgreso.txt";
                break;
            }
            case 3: {
                ruta = "C:\\formato\\ticketPagoCliente.txt";
                break;
            }
            case 4: {
                ruta = "C:\\formato\\ticketMovimientoIngreso.txt";
                break;
            }
            case 5: {
                ruta = "C:\\formato\\ticketMovimientoEgreso.txt";
                break;
            }
        }
        return ruta;
    }// Fin crearRutaArchivo
    
    
    /**
     * Funcion encargada de crear y setear apropiadamente las variables para
     * una correcta impresion
     * @param rutaArchivo Representa la ruta del archivo a imprimir
     * @throws FileNotFoundException
     * @throws IOException 
     */
    private void crearEntornoDeImpresion(String rutaArchivo) throws FileNotFoundException, IOException{
        int i = 10;
        String texto = "";
        File fichero = new File(rutaArchivo);
        BufferedReader br = new BufferedReader(new FileReader(fichero));
        this.pagina = this.impresion.getGraphics();
        this.pagina.setFont(this.fuente);
        this.pagina.setColor(Color.black);
        while((texto = br.readLine()) != null){
            this.pagina.drawString(texto, 60, 60+i);
            i = i+20;
        }
        this.pagina.dispose();
        this.impresion.end();
    }// Fin crearEntornoDeImpresion
    
}// Fin clase Impresora